import scrapy
from scrapy import cmdline
from scrapy.http import HtmlResponse


class QingTingSpider(scrapy.Spider):
    name = "qingting"
    allowed_domains = ["m.qingting.fm"]
    start_urls = ["http://m.qingting.fm/"]

    def parse(self, response: HtmlResponse, **kwargs):  # 启动scrapy框架会自动调用parse方法
        """
        parse方法是scrapy框架的回调方法, 当启动scrapy框架之后:
            1.scrapy对start_urls类属性进行迭代并获取将要请求的地址
            2.获取到地址之后scrapy会自动发送请求
            3.获取到响应对象后会调用parse方法并将获取到的response对象传递过来
        """
        print('scrapy框架返回的response对象:', response)

        # response对象常用的属性
        print('响应对象中的url信息:', response.url)
        print('响应头:', response.headers)
        print('响应状态码:', response.status)
        print('响应体:', response.body)  # 页面源代码, 类型是字节类型
        print('请求地址:', response.request.url)
        print('请求头:', response.request.headers)


if __name__ == '__main__':
    # 使用cmdline执行爬虫运行指令
    cmdline.execute('scrapy crawl qingting'.split())
